# 主模块：接收用户从控制台输入的字符串，并进行合法性验证
def main():
    # 接收用户输入的字符串
    user_input = input("请输入一个字符串（长度在0到255之间）：")

    # 验证字符串长度
    if len(user_input) < 0 or len(user_input) > 255:
        print("输入的字符串长度不合法，请重新输入！")
        return

    # 调用 letter 模块处理字符串
    cleaned_input = letter(user_input)

    # 调用 reverse 模块反转字符串
    reversed_input = reverse(cleaned_input)

    # 调用 enCode 模块加密字符串
    encrypted_input = enCode(reversed_input)

    # 输出加密后的字符串
    print("加密后的字符串为：", encrypted_input)


# letter 模块：接收字符串，将字符串中的非英文字符剔除
def letter(input_string):
    cleaned_string = ""
    for char in input_string:
        if 'A' <= char <= 'Z' or 'a' <= char <= 'z':
            cleaned_string += char
    return cleaned_string


# reverse 模块：将接收到的全英文字符反转
def reverse(input_string):
    reversed_string = ""
    for i in range(len(input_string) - 1, -1, -1):
        reversed_string += input_string[i]
    return reversed_string


# enCode 模块：使用凯撒密码算法对已反转的字符串加密后输出
def enCode(input_string, shift=3):
    encrypted_string = ""
    for char in input_string:
        if 'A' <= char <= 'Z':
            encrypted_string += chr((ord(char) - ord('A') + shift) % 26 + ord('A'))
        elif 'a' <= char <= 'z':
            encrypted_string += chr((ord(char) - ord('a') + shift) % 26 + ord('a'))
        else:
            encrypted_string += char
    return encrypted_string


# 主程序入口
if __name__ == "__main__":
    main()